package model;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;

public class Investigacion {
	private Integer id = null;
	private String nombre = null;
	private ArrayList colFicha = null;
	private long cdate;

	public Investigacion() {
		this.setCDate();
	}

	public boolean hasId() {
		return (this.id != null);
	}

	public Integer getId() {
		return this.id;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public ArrayList getColFichas(){
		return this.colFicha;
	}

	//ingresa una ficha a la coleccion de fichas devuelve true si exito
	public boolean addFicha(Ficha ficha){
		return this.colFicha.add(ficha);
	}

	// ingresa una ficha recargado
	public boolean addFicha(String autor, String titulo, TipoLectura tipo){
		Ficha ficha = new Ficha();
		ficha.setAutor(autor);
		ficha.setTipo(tipo);
		ficha.setTitulo(titulo);
		return this.colFicha.add(ficha);
	}

	//retorna una ficha si la encuentra de lo contrario retorna null
	//la ficha se busca por su titulo
	public Ficha getFichaPorTitulo(String titulo) {
		//boolean encontre = false;
		Iterator i = this.colFicha.iterator();
		while(i.hasNext()) {
			Ficha unaF = (Ficha)i.next();
			if (unaF.getTitulo()==titulo)
				return unaF;	
		}
		return null;
	}

	public Ficha getFichaPorAutor(String autor) {
		//boolean encontre = false;
		Iterator i = this.colFicha.iterator();
		while(i.hasNext()) {
			Ficha unaF = (Ficha)i.next();
			if (unaF.getAutor()==autor)
				return unaF;	
		}
		return null;
	}

	public void setLecturas(ArrayList fichas) {
		this.colFicha = fichas;
	}
	
	public void addLectura(Ficha ficha) {
		if(!this.colFicha.contains(ficha)) {
			this.colFicha.add(ficha);
		}
	}

	public long getCDate() {
		return this.cdate;
	}

	private void setCDate() {
		Date now = new Date();
		this.cdate = now.getTime();
	}	

	//	 elimina un elemento tipo Ficha de la coleccion
	public boolean dellFicha(Ficha unaf){
		boolean retorno = false;
		if (! unaf.getDatos().isEmpty())
			retorno =	this.getColFichas().remove(unaf);
		return retorno;
	}
	
	public String toString(){
		return this.nombre;
	}
}